package com.ruoyi.system.service;

import com.ruoyi.system.domain.PracticeCadetMasterSkill;
import com.ruoyi.system.domain.PracticeCadetMasterSkillCount;

import java.util.List;

/**
 * 实践掌握技能Service接口
 *
 * @author dp
 * @date 2023-12-02
 */
public interface IPracticeCadetMasterSkillService {
    /**
     * 查询实践掌握技能
     *
     * @param masterSkillId 实践掌握技能主键
     * @return 实践掌握技能
     */
    public PracticeCadetMasterSkill selectPracticeCadetMasterSkillByMasterSkillId(Long masterSkillId);

    /**
     * 查询实践掌握技能列表
     *
     * @param practiceCadetMasterSkill 实践掌握技能
     * @return 实践掌握技能集合
     */
    public List<PracticeCadetMasterSkill> selectPracticeCadetMasterSkillList(PracticeCadetMasterSkill practiceCadetMasterSkill);

    /**
     * 查询实践掌握技能合计列表
     * @param submitBegin
     * @param submitEnd
     * @param baseId
     * @param masterSkillStatus
     * @return
     */
    public List<PracticeCadetMasterSkillCount> selectPracticeCadetMasterSkillCount(String submitBegin, String submitEnd, String baseId, String masterSkillStatus);

    /**
     * 根据条件查询实践掌握技能列表
     * @param submitBegin
     * @param submitEnd
     * @param baseId
     * @param cadetId
     * @param masterSkillStatus
     * @return
     */
    public List<PracticeCadetMasterSkill> getMasterSkillList(String submitBegin, String submitEnd, String baseId, String cadetId, String masterSkillStatus);

    /**
     * 新增实践掌握技能
     *
     * @param practiceCadetMasterSkill 实践掌握技能
     * @return 结果
     */
    public int insertPracticeCadetMasterSkill(PracticeCadetMasterSkill practiceCadetMasterSkill);

    /**
     * 修改实践掌握技能
     *
     * @param practiceCadetMasterSkill 实践掌握技能
     * @return 结果
     */
    public int updatePracticeCadetMasterSkill(PracticeCadetMasterSkill practiceCadetMasterSkill);

    /**
     * 批量删除实践掌握技能
     *
     * @param masterSkillIds 需要删除的实践掌握技能主键集合
     * @return 结果
     */
    public int deletePracticeCadetMasterSkillByMasterSkillIds(Long[] masterSkillIds);

    /**
     * 删除实践掌握技能信息
     *
     * @param masterSkillId 实践掌握技能主键
     * @return 结果
     */
    public int deletePracticeCadetMasterSkillByMasterSkillId(Long masterSkillId);

    /**
     * 实体数据补全
     *
     * @param practiceCadetMasterSkill 实体
     * @param userId                   用户id
     * @param crateType                创建类型 1：新增 2：修改
     */
    public void completeData(PracticeCadetMasterSkill practiceCadetMasterSkill, Long userId, Integer crateType);

}
